草庐IT

Java TLS-PSK 套接字

全部标签

java - 如何解码来自 TCP 套接字的数据

我正在尝试使用python制作的服务器和java制作的客户端制作一个非常简单的聊天程序。但是我不知道如何解码服务器从客户端接收到的数据。客户端发送并编码为UTF-8。只是打印它看起来像这样:http://i.imgur.com/0usK6j7.jpg首先从UTF-8解码它看起来像这样:http://i.imgur.com/Ctwivl4.jpg我假设可以删除NUL字符或\x00。包装整个消息的b''也是如此。第二个字符似乎指定了消息的长度。但是我该如何解码呢?我应该手动删除字符吗?我知道这是一个非常基本的问题,之前可能有人问过,但我什至不知道要搜索什么。 最

c# - 套接字数据处理 - 用于数据打包 (TCP)

我正在做一个套接字项目。我想用TCP发送~4kb数据。我需要在这里问一个问题。即:如果我使用TCP发送~4kb数据,我的数据处理函数是否可以再接收一次该数据?即RECEIVE(server-side)函数可以返回2次(如果我发送~4kb数据一次)?如果我能理解这一点,我将开始制作自己的数据包处理系统。 最佳答案 简而言之:是的。TCP传输字节流,没有提及TCP连接中的消息(及其边界)。即使您发送两个字节,它们也可以在两个单独的block中接收(当然是理论上的;实际上不太可能)。所以你应该在你的数据流中加入一些标记。我建议在标题至少包

windows - 在 Windows 中模拟 TCP 套接字的低速

我正在构建一个使用TCP套接字进行通信的应用程序。我想测试它在低速条件下的表现。网站上也有类似的问题,但据我了解,它们处理的是HTTP流量,或者是关于Linux的。我的流量不是HTTP,只是普通的TCP套接字,操作系统是Windows。我尝试使用fiddler的调制解调器速度设置,但它没有用,它似乎只适用于HTTP连接。 最佳答案 虽然您确实可能想要投资于一组广泛的单元测试,但您可以使用VMWareWorkstation模拟各种网络条件。:您必须安装用于测试的虚拟机,设置桥接网络(让虚拟机访问您的真实网络)并将您的代码上传到虚拟机。

sockets - 从 lisp 中的套接字流读取行

我正在lisp中的TCP客户端上工作,并且在正确读取/打印套接字流时遇到困难。当客户端向服务器发送数据时,它应该会收到响应,我需要将其写入标准输出。这工作正常,除了我遇到响应打印两次的问题。如果我有多个命令被发送,只有最后一个会被打印两次。这是我的代码:(defunsocket-print(stringsocket)(write-linestring(usocket:socket-streamsocket))(force-output(usocket:socket-streamsocket)))(defunsocket-read(socket)(write-line(read-line

java - Android TCP套接字客户端/服务器实现

我是Java和Android的新手,我正在尝试创建一个服务器/客户端应用程序。目前我在PC上运行服务器,而客户端在Android设备上。通信发生并且一切正常,但我想区分来自客户端的传入消息以便在服务器上执行不同的操作。这是服务器的代码。客户端非常简单并且运行良好。例如,当我从客户端发送“姓名”时,服务器应回答“Matteo”,但它总是回答“其他”,我不明白为什么!我想问题出在语句if(dataInputStream.equals("Name")){谢谢。importjava.io.DataInputStream;importjava.io.DataOutputStream;import

c++ - 在 C++ 中通过套接字传输数据

我目前正在从事一个使用网络的项目。我必须发送一个结构structHeader{uint32_tmagic;uint32_tchecksum;uint32_ttimestamp;uint16_tcommandId;uint16_tdataSize;};structPacket{structHeaderheader;chardata[128];};我正在尝试使用TCP将结构包从一个套接字发送到另一个套接字。我试过那样发送我的结构send(socket,&my_struct,sizeof(my_struct),0);但它不起作用,所以我尝试将我的结构序列化为char*unsignedchar

java - android tcp/ip 套接字不会将数据发送到计算机

我试图制作一个应用程序,将数据从android发送到计算机(java到vb.net)。数据发送在eclipsejava项目中有效,但在android项目中无效。但我有一个问题。我的计算机中没有传入数据到VisualBasic。VB代码:ImportsSystem.Net.SocketsImportsSystem.ThreadingImportsSystem.IOPublicClassForm1DimListenerAsNewTcpListener(65535)DimClientAsNewTcpClientDimMessageAsString=""PrivateSubForm1_Load

sockets - TCP 中的数据包大小、窗口大小和套接字缓冲区

在研究了“窗口大小”的概念之后,我的理解是它在通过线路发送之前保留数据包,直到收到最早数据包的确认。一旦填满,后续数据包将被丢弃。我在某处也读到TCP是一种流协议(protocol),而数据包是与网络层的IP协议(protocol)相关的。直到我假设我已经声明了一个缓冲区(内部代码),我用一些数据填充它并使用套接字发送这个缓冲区。我声明了一个10000字节的缓冲区,并使用socketover10Gbps链接重复发送它。我有以下假设和问题。请验证并帮助如果我想发送一个64,256,512等字节的数据包,在那么多空间的代码中声明缓冲区并通过套接字发送。每次执行send()命令都会发送一个那

linux - 如何在 Rust 中设置套接字选项 SO_REUSEPORT?

我已经阅读了std::net和mio的文档,并且发现了一些方法,例如set_nodelay和set_keepalive,但我还没有找到在给定套接字上设置其他套接字选项(如SO_REUSEPORT和SO_REUSEADDR)的方法。我该怎么做? 最佳答案 因为SO_REUSEPORTisn'tcross-platform,您将需要深入研究特定于平台的代码。在这种情况下,您可以从套接字获取原始文件描述符,然后使用libc包中的函数、类型和值来设置您想要的选项:externcratelibc;//0.2.43usestd::{io,mem

python - 如何在 Python 套接字聊天室中创建踢功能?

这是一个套接字聊天室,客户端可以在其中相互发送消息。我想要一个踢球功能,服务器可以踢出某些人。我已经成功地把想要的用户踢出去了,但它仍然把我踢出去,这是执行此操作的代码:fornameinkeys:if('**kick'+name)indata:clients[name].close()delclients[name]found=True我试过这个:fornameinkeys:if('**kick'+name)indata:data=data.replace('**kick'+name,'')clients.get(name).popfound=True但是当我运行这段代码并尝试它时,